<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- $Id: features.html,v 1.13 2002/02/28 05:13:55 wcc Exp $ -->

<html>
  <head>
    <title>Eggdrop Documentation: Features</title>
  </head>

  <body>
    <div align="center">
      <p><strong>Features</strong></p>
    </div>
    <hr>

    <div align="center">
      <p><strong><em>Eggdrop -- an IRC (ro)bot</em></strong></p>
    </div>

    <p>Eggdrop is the most advanced IRC robot available. It has been under
    development since December 1993, and unlike most other bots, it is still
    regularly updated. Its features include:</p>

    <blockquote>
      <ul>
        <li>completely different channel user lists like having a separate
        bot for each channel.</li>

        <li>complete channel protection, customizable via config file:
        permanently store a ban list with comments, etc</li>

        <li>user records saved to disk and alterable via dcc chat: each user
        can have a password (encrypted), a list of valid hostmasks, a set of
        access flags, etc</li>

        <li>the ability to &quot;learn&quot; new users (if you choose to have
        the bot do so) by letting users /MSG the bot &quot;hello&quot; and
        granting them automatic access of whatever type you specify (or even
        no access at all)</li>

        <li>a &quot;party line&quot; available through dcc chat or telnet,
        with multiple channels, giving you the ability to talk to people
        without being affected by netsplits</li>

        <li>console mode: you can view each channel through dcc chat or
        telnet, selectively looking at mode changes, joins and parts, channel
        talk, or any combination of the above</li>

        <li>a file system where people can upload and download files, in an
        environment that looks and acts (for the most part) like a typical
        Unix system -- plus the ability to mark directories as hidden /
        unaccessible to people without certain user flags</li>

        <li>bot network: link two or more bots together for a party line that
        can stretch not only across channels, but across IRC networks (one
        bot on EFnet, one bot on Undernet, etc)</li>

        <li>script language: commands and features can be added to the bot on
        the fly, by means of the Tcl script language, giving you the power of
        TOTAL customization of your bot -- similar to ircII script</li>
      </ul>
    </blockquote>

    <p><strong>WARNING</strong></p>

    <blockquote>
      <p>Eggdrop is <strong>NOT</strong> a simple bot to use. It is an
      <strong>advanced bot</strong> for people who know IRC and know what
      they&#39;re doing. If you don&#39;t know what DCC CHAT is or how to use
      it -- if you don&#39;t know the difference between <strong>
      #channels</strong> and <strong>&amp;channels</strong> -- if you
      don&#39;t know what a <strong>clone bot</strong> or <strong>CTCP
      avalanche</strong> is -- then <strong>this bot is not for you</strong>.
      Choose a simpler bot like <strong>Vladbot</strong>, <strong>
      Baloobot</strong>, <strong>ComBot</strong>, or find one of the many
      <strong>scriptbots</strong> to use.</p>

      <p>This is the 1.6 branch of the Eggdrop Bot.</p>
    </blockquote>

    <p><strong>NOTE</strong></p>

    <blockquote>
      <p>This bot is <strong>NOT</strong> intended for users of very limited
      <strong>MEMORY</strong> or <strong>DISK</strong> shell accounts. The
      development of this latest design of Eggdrop is geared towards features
      and flexibility. If you have restraints on the resources allowed to run
      your bot, then you should instead consider the 1.0 Eggdrop version.</p>
    </blockquote>

    <p>Eggdrop now has two compile time configurations for modules:</p>

    <p><strong>Modular</strong></p>

    <blockquote>
      <p>The <strong>modular</strong> version of Eggdrop 1.6 provides for
      the on-the-fly loading of extensions to the bot code without having to
      recompile the entire bot. This is available on OS platforms which
      support dynamically linked/shared libraries in their run-time and Tcl
      libraries. It allows for functionality of the bot to be loaded and
      unloaded at any time.</p>
    </blockquote>

    <p>The base loadable modules distributed with this Eggdrop version
    are:</p>

    <blockquote>
      <ul>
        <li><strong>assoc</strong> This is the functionality of the
        `assoc&#39; command for naming party `chat&#39; lines. It also serves
        as an example for writing your own modules.</li>

        <li><strong>blowfish</strong> The standard Eggdrop encrypting
        routines for passwords and other encryption. This can be replaced
        with a user-written module to perform their own encrypting
        algorithms.</li>

        <li><strong>channels</strong> This allows Eggdrop to have channel
        info stored and used on that server that you allowed for with the
        server module</li>

        <li><strong>compress</strong> This allows compression of the userfile
        saving disk space, and bandwidth when sending large userfiles to
        share bots..</li>

        <li><strong>console</strong> This provides storage of console
        settings when you exit the bot (or .store).</li>

        <li><strong>dns</strong> This provides asynchronous DNS lookups,
        avoiding the problem of the bot stalling while dns lookups are
        performed.</li>

        <li><strong>ctcp</strong> This provides the normal ctcp replies that
        you&#39;d expect.</li>

        <li><strong>filesys</strong> This module performs the file-system
        operation for DCC file transfers to and from the BOT over via IRC DCC
        commands.</li>

        <li><strong>irc</strong> This controls all other IRC related stuff.
        Not loading it is the equivalent of the old NO_IRC setting.</li>

        <li><strong>notes</strong> This provides support for storing of notes
        for users from each other. Notes between currently online users is
        supported in the core, this is only for storing the notes for later
        retrieval, direct user-&gt;user notes are built-in.</li>

        <li><strong>seen</strong> This provides seen commands via msg, on
        channel or via dcc, similar to the various scripts.</li>

        <li><strong>server</strong> This allows Eggdrop to connect to a
        server, but that&#39;s about it.</li>

        <li><strong>share</strong> This provides the userfile sharing support
        (this requires the channels &amp; transfer modules).</li>

        <li><strong>transfer</strong> This module performs the bot-to-bot
        userfile sharing necessary for share bots. It is loaded automatically
        when filesys is loaded.</li>

        <li><strong>wire</strong> This provides an encrypted party line
        communication.</li>

        <li><strong>woobie</strong> This is a example/skeletal module for
        writing your own module.</li>
      </ul>
    </blockquote>

    <p><strong>Static</strong></p>

    <blockquote>
      <p>The <strong>static</strong> version of Eggdrop 1.6 is pretty much
      the same as the module bot, except each individual module is linked
      into the executable. You still need to &#39;loadmodule
      &lt;module&gt;&#39; to turn them on.</p>

      <p>See the file MODULES for more specific MODULE information.<br>
       New to 1.6:</p>
    </blockquote>

    <p><strong>Botnet</strong></p>

    <blockquote>
      <p>Major protocol changes, lots less messages &amp; bytes used.</p>

      <p>You WILL get double messages if you link
      OLD&lt;-&gt;NEW&lt;-&gt;NEW&lt;-&gt;OLD (or any number of NEW&#39;s
      between them).<br>
       To prevent this, have all your new bots on 1 side of the botnet, and
      all the old ones on the other (although OLD&lt;-&gt;NEW&lt;-&gt;OLD
      should be ok).</p>

      <p>The order of the version and handshake messages has reversed this
      means on a new botlink between an OLD &amp; a NEW, but you must .link
      from the OLD or the NEW won&#39;t know the password.</p>
    </blockquote>

    <p><strong>Userlist</strong></p>

    <blockquote>
      <p>If you want to have the option of going back to an old version SAVE
      your userlist!! This is a new version userlist, and it&#39;s not
      backwards compatible once written (it can still READ old userlists take
      note).</p>
    </blockquote>

    <p><strong>Flags</strong></p>

    <blockquote>
      <p>Flags have multiplied &amp; split up: normal user/channel flags
      still exist and are setable by .chattr. You can also now use .chattr
      +o|-o #channel. New are the &quot;user-defined&quot; flags which are
      all of A-Z for users &amp; channels. Also, bot attributes are separated
      now and are set using .botattr. Bots have &quot;user-defined&quot;
      flags 0-9. The old 0-9 user defined flags will be converted to A-J when
      you upgrade your userfile.</p>
    </blockquote>

    <p><strong>Sharing</strong></p>

    <blockquote>
      <p><strong>BIG CHANGE</strong> well, big in use, small in code ;)</p>

      <p>There are now 2 sharing flags, +p = passive share, +s = aggressive
      share. Your bot will only accept sharing with passively with 1 bot at a
      time, although any number of aggressive shares is fine.</p>

      <p>Consider the botnet:</p>

      <p>HubBotA<br>
       |-+LeafBotA<br>
       `-+HubBotB<br>
       |-+LeafBotB<br>
       `-or `-+LeafBotC</p>

      <p>Flags would be set as such:</p>

      <dl>
        <dt>HubBotA has:</dt>

        <dd>
          <p>LeafBotA: +sl<br>
           HubBotB: +s<br>
           LeafBotC: +sl</p>
        </dd>

        <dt>LeafBotA has:</dt>

        <dd>
          <p>HubBotA: +ph</p>
        </dd>

        <dt>HubBotB has:</dt>

        <dd>
          <p>LeafBotB: +sl<br>
           LeafBotC: +sl</p>
        </dd>

        <dt>LeafBotB has:</dt>

        <dd>
          <p>HubBotB: +ph</p>
        </dd>

        <dt>LeafBotC has:</dt>

        <dd>
          <p>HubBotB: +ph<br>
           HubBotA: +ph</p>
        </dd>
      </dl>

      <p>how&#39;s that look? :)</p>
    </blockquote>

    <p><strong>Installation</strong></p>

    <blockquote>
      <p>make DEST=&quot;directory&quot; install</p>
    </blockquote>
    <hr>

    <p><em>Copyright &copy; 1997 Robey Pointer<br>
     Copyright &copy; 1999, 2000, 2001, 2002 <a href="http://www.eggheads.org/">
     Eggheads Development Team</a></em></p>
  </body>
</html>
